<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of produtos
 *
 * @author link2
 */
class produtos extends ADM_Controller {

    private $data_destacar = array('sim' => array(
            'name' => 'destacar',
            'id' => 'destacar_sim',
            'value' => '1',
            'checked' => FALSE,
            'required' => "required"
        ), 'nao' => array(
            'name' => 'destacar',
            'id' => 'destacar_nao',
            'value' => '0',
            'checked' => TRUE,
            'required' => "required"
            ));
    private $data_status = array('sim' => array(
            'name' => 'status',
            'id' => 'status_sim',
            'value' => '1',
            'checked' => TRUE,
            'required' => "required"
        ), 'nao' => array(
            'name' => 'status',
            'id' => 'status_nao',
            'value' => '0',
            'checked' => FALSE,
            'required' => "required"
            ));

    public function __construct() {
        parent::__construct();
        $this->load->config('ecommerce/parametros');
        $this->load->add_module('local');
        $this->load->config('local/parametros');
        $this->load->model('local/local_idiomas_model');

        /// Inicio extender modulo
        $this->load->add_module('settings');
        $this->load->config('settings/parametros');
        $this->load->model('settings/settings_model');
        /// Fim extender modulo

        $this->load->language('ecommerce/produtos');
        $this->load->helper('html');
        $this->load->model('ecommerce/produtos_model');
        $this->load->model('ecommerce/produtos_detalhes_model');
        $this->load->model('ecommerce/produtos_has_imagens_model');
        $this->load->model('ecommerce/produtos_opcional_valor_model');
        $this->load->model('ecommerce/produtos_categorias_model');
        $this->load->model('ecommerce/produtos_marcas_model');
        $this->load->model('ecommerce/produtos_opcional_model');
        $this->load->model('ecommerce/produtos_opcional_atributo_model');
        $this->load->model('ecommerce/produtos_lojas_model');
        $this->load->model('ecommerce/produtos_estoque_model');
        $this->checar_metodo(uri_string());
    }

    public function cadastrar() {
        $v_dados = array();
        $v_dados['title_acao'] = $this->lang->line('title_acao_cadastrar');
        $v_dados['id'] = '';
        $v_dados['categoria_id'] = form_dropdown('categoria_id', $this->produtos_categorias_model->combo(), array(), ' required="required"');
        $v_dados['produtos_marca_id'] = form_dropdown('produtos_marca_id', $this->produtos_marcas_model->combo(), array(), ' required="required"');
        $v_dados['imagens_id'] = '';
        $v_dados['destacar'] = form_radio($this->data_destacar['sim']) . form_label($this->lang->line('lang_title_destacar_1')) . form_radio($this->data_destacar['nao']) . form_label($this->lang->line('lang_title_destacar_0'));
        $v_dados['codigo_referencia'] = '';
        $v_dados['status'] = form_radio($this->data_status['sim']) . form_label($this->lang->line('lang_title_status_1')) . form_radio($this->data_status['nao']) . form_label($this->lang->line('lang_title_status_0'));
        $v_dados['preco_custo'] = '';
        $v_dados['max_parcelas'] = '';
        $v_dados['prazo_entrega'] = '';
        $v_dados['peso'] = '';
        $v_dados['data_add'] = '';
        $v_dados['fotos'] = '';

        //$v_dados['detalhes_idiomas'] = $v_dados['opcional_idiomas'] = array();

        $_b_consultar_idiomas = $this->local_idiomas_model->consultar_total();

        foreach ($_b_consultar_idiomas as $k => $v) {
            $v_dados['detalhes_idiomas'][$k]['idioma'] = strtoupper($v->codigo);
            $v_dados['detalhes_idiomas'][$k]['idiomas_id'] = $v->id;
            $v_dados['detalhes_idiomas'][$k]['lang_title_titulo'] = $this->lang->line('lang_title_titulo');
            $v_dados['detalhes_idiomas'][$k]['titulo_idioma'] = '';
            $v_dados['detalhes_idiomas'][$k]['lang_title_resumo'] = $this->lang->line('lang_title_resumo');
            $v_dados['detalhes_idiomas'][$k]['resumo_idioma'] = '';
            $v_dados['detalhes_idiomas'][$k]['lang_title_descricao'] = $this->lang->line('lang_title_descricao');
            $v_dados['detalhes_idiomas'][$k]['descricao_idioma'] = '';
        }

        $v_dados['opcional_tab'] = array();
        $v_dados['opcional'] = array();
        $_b_consultar_idiomas = $this->local_idiomas_model->get_codigo($this->config->item('language'));
        $_b_consultar_opcional_idiomas = $this->produtos_opcional_model->consultar_total_idioma($_b_consultar_idiomas->id);

        if ($_b_consultar_opcional_idiomas != null) {
            foreach ($_b_consultar_opcional_idiomas as $key => $value) {
                $v_dados['opcional_tab'][$key]['id_ul_tab'] = $value->id;
                $v_dados['opcional_tab'][$key]['nome'] = $value->nome;
                $v_dados['opcional'][$key]['id_tab'] = $value->id;
                $v_dados['opcional'][$key]['opcionais'] = array();
                $_b_consultar_opcional_atributos_idiomas = $this->produtos_opcional_atributo_model->consultar_total_opcional_idiomas($value->idiomas_id, $value->opcional_id);
                if ($_b_consultar_opcional_atributos_idiomas != null) {
                    if ($this->settings_model->get_valor("multipla_caracteristicas") == "true") {
                        foreach ($_b_consultar_opcional_atributos_idiomas as $key_1 => $value_1) {
                            if ($value_1->nome != null) {
                                $data_opcional = array('id' => 'valor_' . $value_1->atributo_id,
                                    'name' => 'valor[' . $value_1->atributo_id . ']',
                                    'value' => $value_1->atributo_id);
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['lbl'] = form_label($value_1->nome, 'valor_' . $value_1->atributo_id);
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['atts'] = form_checkbox($data_opcional);
                            }
                        }
                    } else {
                        foreach ($_b_consultar_opcional_atributos_idiomas as $key_1 => $value_1) {
                            if ($value_1->nome != null) {
                                $data_opcional = array('id' => 'valor_' . $value_1->atributo_id,
                                    'name' => 'valor[' . $value->opcional_id . ']',
                                    'value' => $value_1->atributo_id);
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['lbl'] = form_label($value_1->nome, 'valor_' . $value_1->atributo_id);
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['atts'] = form_radio($data_opcional);
                            }
                        }
                    }
                }
            }
        }
        $v_dados['link_listar_produtos'] = $this->permissions->get_url('ecommerce_produtos_consultar');
        $v_dados['action_produtos_gravar'] = $this->permissions->get_url('ecommerce_produtos_gravar');
        $v_dados = $this->lang->multi_line($v_dados);
        //pre($v_dados);
        $this->parser->parse_cms('ecommerce_produtos_view', $v_dados);
    }

    public function alterar($_id) {
        $_b_consultar = $this->produtos_model->consultar($_id);
        $_b_consultar = $_b_consultar[0];
        //pre($_b_consultar);
        $v_dados = array();
        $v_dados['title_acao'] = $this->lang->line('title_acao_alterar');
        $v_dados['id'] = $_b_consultar->id;
        $v_dados['categoria_id'] = form_dropdown('categoria_id', $this->produtos_categorias_model->combo(), array($_b_consultar->categoria_id), ' required="required"');
        $v_dados['produtos_marca_id'] = form_dropdown('produtos_marca_id', $this->produtos_marcas_model->combo(), array($_b_consultar->produtos_marca_id), ' required="required"');
        $v_dados['imagens_id'] = '';
        $this->data_destacar['sim']['checked'] = $_b_consultar->destacar == 1 ? TRUE : FALSE;
        $this->data_destacar['nao']['checked'] = $_b_consultar->destacar == 0 ? TRUE : FALSE;
        $v_dados['destacar'] = form_radio($this->data_destacar['sim']) . form_label($this->lang->line('lang_title_destacar_1')) . form_radio($this->data_destacar['nao']) . form_label($this->lang->line('lang_title_destacar_0'));
        $v_dados['codigo_referencia'] = $_b_consultar->codigo_referencia;
        //$v_dados['status'] = form_radio($this->data_status['sim']) . form_label($this->lang->line('lang_title_status_1'), ($_b_consultar->status == 1 ? TRUE : FALSE)) . form_radio($this->data_status['nao']) . form_label($this->lang->line('lang_title_status_0'), ($_b_consultar->status == 0 ? TRUE : FALSE));
        $this->data_status['sim']['checked'] = $_b_consultar->status == 1 ? TRUE : FALSE;
        $this->data_status['nao']['checked'] = $_b_consultar->status == 0 ? TRUE : FALSE;
        $v_dados['status'] = form_radio($this->data_status['sim']) . form_label($this->lang->line('lang_title_status_1')) . form_radio($this->data_status['nao']) . form_label($this->lang->line('lang_title_status_0'));
        $v_dados['preco_custo'] = $_b_consultar->preco_custo;
        $v_dados['max_parcelas'] = $_b_consultar->max_parcelas;
        $v_dados['prazo_entrega'] = $_b_consultar->prazo_entrega;
        $v_dados['peso'] = $_b_consultar->peso;
        $v_dados['data_add'] = $_b_consultar->data_add;
        $v_dados['fotos'] = $this->_produtos_imagens($_id);

        $v_dados['detalhes_idiomas'] = $v_dados['opcional_idiomas'] = array();

        $_b_consultar_idiomas = $this->local_idiomas_model->consultar_total();

        foreach ($_b_consultar_idiomas as $k => $v) {
            $_b_consultar_detalhes = $this->produtos_detalhes_model->consultar($_id, $v->id);
            $v_dados['detalhes_idiomas'][$k]['idioma'] = strtoupper($v->codigo);
            $v_dados['detalhes_idiomas'][$k]['idiomas_id'] = $v->id;
            $v_dados['detalhes_idiomas'][$k]['lang_title_titulo'] = $this->lang->line('lang_title_titulo');
            $v_dados['detalhes_idiomas'][$k]['titulo_idioma'] = $_b_consultar_detalhes[0]->titulo;
            $v_dados['detalhes_idiomas'][$k]['lang_title_resumo'] = $this->lang->line('lang_title_resumo');
            $v_dados['detalhes_idiomas'][$k]['resumo_idioma'] = $_b_consultar_detalhes[0]->resumo;
            $v_dados['detalhes_idiomas'][$k]['lang_title_descricao'] = $this->lang->line('lang_title_descricao');
            $v_dados['detalhes_idiomas'][$k]['descricao_idioma'] = $_b_consultar_detalhes[0]->descricao;
        }

        $v_dados['opcional_tab'] = array();
        $v_dados['opcional'] = array();
        $_b_consultar_idiomas = $this->local_idiomas_model->get_codigo($this->config->item('language'));
        $_b_consultar_opcional_idiomas = $this->produtos_opcional_model->consultar_total_idioma($_b_consultar_idiomas->id);

        if ($_b_consultar_opcional_idiomas != null) {
            foreach ($_b_consultar_opcional_idiomas as $key => $value) {
                $v_dados['opcional_tab'][$key]['id_ul_tab'] = $value->id;
                $v_dados['opcional_tab'][$key]['nome'] = $value->nome;
                $v_dados['opcional'][$key]['id_tab'] = $value->id;
                if (!isset($v_dados['opcional'][$key]['opcionais'])) {
                    $v_dados['opcional'][$key]['opcionais'] = array();
                }
                $_b_consultar_opcional_atributos_idiomas = $this->produtos_opcional_atributo_model->consultar_total_opcional_idiomas($value->idiomas_id, $value->opcional_id, $_id);
                if ($_b_consultar_opcional_atributos_idiomas != null) {

                    if ($this->settings_model->get_valor("multipla_caracteristicas") == "true") {
                        foreach ($_b_consultar_opcional_atributos_idiomas as $key_1 => $value_1) {
                            if ($value_1->nome != null) {
                                $data_opcional = array('id' => 'valor_' . $value_1->atributo_id,
                                    'name' => 'valor[' . $value_1->atributo_id . ']',
                                    'value' => $value_1->atributo_id,
                                    'checked' => FALSE,);
                                if ($value_1->id != null) {
                                    $data_opcional['checked'] = TRUE;
                                }
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['lbl'] = form_label($value_1->nome, 'valor_' . $value_1->atributo_id);
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['atts'] = form_checkbox($data_opcional);
                            }
                        }
                    } else {
                        foreach ($_b_consultar_opcional_atributos_idiomas as $key_1 => $value_1) {
                            if ($value_1->nome != null) {
                                $data_opcional = array('id' => 'valor_' . $value_1->atributo_id,
                                    'name' => 'valor[' . $value->opcional_id . ']',
                                    'value' => $value_1->atributo_id,
                                    'checked' => FALSE,);
                                if ($value_1->id != null) {
                                    $data_opcional['checked'] = TRUE;
                                }
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['lbl'] = form_label($value_1->nome, 'valor_' . $value_1->atributo_id);
                                $v_dados['opcional'][$key]['opcionais'][$key_1]['atts'] = form_radio($data_opcional);
                            }
                        }
                    }
                }
            }
        }

        $v_dados['link_listar_produtos'] = $this->permissions->get_url('ecommerce_produtos_consultar');
        $v_dados['action_produtos_gravar'] = $this->permissions->get_url('ecommerce_produtos_gravar');
        $v_dados = $this->lang->multi_line($v_dados);
        //pre($v_dados);
        $this->parser->parse_cms('ecommerce_produtos_view', $v_dados);
    }

    public function gravar() {
        $v_dados = array();

        $this->load->library('form_validation');
        $this->form_validation->set_rules('status', 'lang:lang_title_status', 'trim|required');
        $this->form_validation->set_rules('categoria_id', 'lang:lang_title_categoria_id', 'trim|required');
        $this->form_validation->set_rules('produtos_marca_id', 'lang:lang_title_produtos_marca_id', 'trim|required');
        $this->form_validation->set_rules('destacar', 'lang:lang_title_destacar', 'trim|required');
        $this->form_validation->set_rules('codigo_referencia', 'lang:lang_title_codigo_referencia', 'trim|required|produto_unico[id]');
        $this->form_validation->set_rules('preco_custo', 'lang:lang_title_preco_custo', 'trim|required');
        $this->form_validation->set_rules('max_parcelas', 'lang:lang_title_max_parcelas', 'trim|required');
        $this->form_validation->set_rules('prazo_entrega', 'lang:lang_title_prazo_entrega', 'trim|required');
        $this->form_validation->set_rules('peso', 'lang:lang_title_peso', 'trim|required');


        if ($this->form_validation->run($this) === FALSE || $this->produtos_model->get_codigo_referencia($this->input->post('codigo_referencia'), $this->input->post('id')) != null) {
            $v_dados['cod'] = 111;
            $v_dados['msg'] = $this->lang->line('lang_msg_submit_warning');
            $v_dados['header'] = $this->lang->line('lang_header_submit_warning');
            $v_dados['campos'] = $this->form_validation->erros_campos_json();
        } else {
            $_dados = array();
            $_dados['status'] = $this->input->post('status');
            $_dados['categoria_id'] = $this->input->post('categoria_id');
            $_dados['produtos_marca_id'] = $this->input->post('produtos_marca_id');
            $_dados['destacar'] = $this->input->post('destacar');
            $_dados['codigo_referencia'] = $this->input->post('codigo_referencia');
            $_dados['preco_custo'] = formataString(array('entrada' => $this->input->post('preco_custo'), 'formato' => 'moedaDb', 'casas' => 2));
            $_dados['max_parcelas'] = $this->input->post('max_parcelas');
            $_dados['prazo_entrega'] = $this->input->post('prazo_entrega');
            $_dados['peso'] = formataString(array('entrada' => $this->input->post('peso'), 'formato' => 'moedaDb', 'casas' => 3));


            if ($this->input->post('id') == '') {
                $v_dados['id'] = $this->produtos_model->cadastrar($_dados);
                $v_dados['cod'] = 999;
                $v_dados['msg'] = $this->lang->line('lang_msg_submit_success');
                $v_dados['header'] = $this->lang->line('lang_header_submit_success');

                $b_lojas = $this->produtos_lojas_model->consultar_total();
                foreach ($b_lojas as $valor) {
                    $insert = array();
                    $insert['produtos_loja_id'] = $valor->id;
                    $insert['id_prod'] = $v_dados['id'];
                    $insert['status'] = '1';
                    $this->produtos_estoque_model->cadastrar($insert);
                }
            } else {
                $this->produtos_model->alterar($this->input->post('id'), $_dados);
                $v_dados['id'] = $this->input->post('id');
                $v_dados['cod'] = 999;
                $v_dados['msg'] = $this->lang->line('lang_msg_submit_success');
                $v_dados['header'] = $this->lang->line('lang_header_submit_success');
            }

            if ($this->input->post('images') != false) {
                $_dados = array();
                $_dados['ec_produtos_id'] = $v_dados['id'];
                foreach ($this->input->post('images') as $key => $value) {
                    $_consultar_imagem = $this->produtos_has_imagens_model->consultar($value);
                    if ($_consultar_imagem == NULL) {
                        $_dados['imagens_id'] = $value;
                        $this->produtos_has_imagens_model->cadastrar($_dados);
                    }
                }
            }

            foreach ($this->input->post('detalhes') as $k => $v) {
                $_b_consultar = $this->produtos_detalhes_model->consultar($v_dados['id'], $k);

                $_dados = array();
                $_dados['produtos_id_prod'] = $v_dados['id'];
                $_dados['idiomas_id'] = $k;
                $_dados['titulo'] = $v['titulo'];
                $_dados['resumo'] = $v['resumo'];
                $_dados['descricao'] = $v['descricao'];

                if ($_b_consultar == null) {
                    $this->produtos_detalhes_model->cadastrar($_dados);
                } else {
                    $this->produtos_detalhes_model->alterar($_b_consultar[0]->id, $_dados);
                }
            }

            if (count($this->input->post('valor')) > 0) {
                //pre($this->input->post('valor'));
                $this->produtos_opcional_valor_model->excluir_produto($v_dados['id']);
                foreach ($this->input->post('valor') as $v) {
                    if ($v != 'false') {
                        $_b_consultar = $this->produtos_opcional_atributo_model->consultar($v);
                        $_dados = array();
                        $_dados['ec_produtos_id'] = $v_dados['id'];
                        $_dados['ec_produtos_opcional_id'] = $_b_consultar->opcional_id;
                        $_dados['ec_produtos_opcional_atributo_id'] = $v;
                        //$_dados['valor'] = formataString(array('entrada' => $value['valor'], 'formato' => 'moedaDb', 'casas' => 2));
                        $this->produtos_opcional_valor_model->cadastrar($_dados);
                    }
                }
            }
        }
        echo json_encode($v_dados);
    }

    public function produto_unico($nome, $id) {
        if ($this->input->post($id) == '') {
            $_b_consultar = $this->produtos_model->get_codigo_referencia($nome);
            if ($_b_consultar == null) {
                return TRUE;
            } else {
                $this->form_validation->set_message('produto_unico', $this->lang->line('lang_produto_unico'));
                return FALSE;
            }
        } else {
            return TRUE;
        }
    }

    public function consultar() {
        $_b_consultar_idiomas = $this->local_idiomas_model->get_codigo($this->config->item('language'));
        $v_dados = array();
        $v_dados['produtos'] = array();
        $v_dados['link_produto_status'] = base_cms() . $this->permissions->get_url('ecommerce_produtos_status');
        $_b_consultar = $this->produtos_model->consultar_total($_b_consultar_idiomas->id);
        //pre($_b_consultar);
        if ($_b_consultar != null) {
            foreach ($_b_consultar as $k => $v) {
                $v_dados['produtos'][$k]['prod_id'] = $v->produtos_id_prod;
                $v_dados['produtos'][$k]['prod_categoria_id'] = $v->categoria_id;
                $v_dados['produtos'][$k]['prod_produtos_marca_id'] = $v->produtos_marca_id;
                $v_dados['produtos'][$k]['prod_destacar'] = $v->destacar;
                $v_dados['produtos'][$k]['prod_codigo_referencia'] = $v->codigo_referencia;
                $v_dados['produtos'][$k]['prod_status_id'] = $v->status;
                if ($v->status == 1)
                    $v_dados['produtos'][$k]['prod_status'] = 'i_tick';
                else
                    $v_dados['produtos'][$k]['prod_status'] = 'i_cross';
                $v_dados['produtos'][$k]['prod_preco_custo'] = $v->preco_custo;
                $v_dados['produtos'][$k]['prod_max_parcelas'] = $v->max_parcelas;
                $v_dados['produtos'][$k]['prod_prazo_entrega'] = $v->prazo_entrega;
                $v_dados['produtos'][$k]['prod_peso'] = $v->peso;
                $v_dados['produtos'][$k]['prod_data_add'] = $v->data_add;
                $v_dados['produtos'][$k]['prod_produtos_id_prod'] = $v->produtos_id_prod;
                $v_dados['produtos'][$k]['prod_idiomas_id'] = $v->idiomas_id;
                $v_dados['produtos'][$k]['prod_titulo'] = $v->titulo;
                $v_dados['produtos'][$k]['prod_resumo'] = $v->resumo;
                $v_dados['produtos'][$k]['prod_descricao'] = $v->descricao;
                $v_dados['produtos'][$k]['acao'] = anchor(base_cms() . $this->permissions->get_url('ecommerce_produtos_alterar') . '/' . $v->produtos_id_prod, $this->lang->line('title_acao_alterar'), 'class="btn small"');
            }
        }
        $v_dados['link_cadastrar_produto'] = $this->permissions->get_url('ecommerce_produtos_cadastrar');
        $v_dados = $this->lang->multi_line($v_dados);
        $this->parser->parse_cms('ecommerce_produtos_lista_view', $v_dados);
    }

    public function status() {
        $dados = array();

        if ($this->input->post('status') == 1)
            $dados['status'] = 0;
        else
            $dados['status'] = 1;

        $this->produtos_model->alterar($this->input->post('id'), $dados);


        if ($dados['status'] == 1) {
            $v_dados['prod_status'] = 'i_tick icon small';
        } else {
            $v_dados['prod_status'] = 'i_cross icon small';
        }

        $v_dados['prod_status_id'] = $dados['status'];
        $v_dados['cod'] = 999;
        $v_dados['msg'] = $this->lang->line('lang_msg_submit_status_success');
        $v_dados['header'] = $this->lang->line('lang_header_submit_success');

        echo json_encode($v_dados);
    }

    private function _produtos_imagens($_id_produtos) {
        $consultar_imagem = $this->produtos_has_imagens_model->consultar_imagens($_id_produtos);
        $this->load->add_module('imagens');
        $this->load->library('imagens/imagens');
        //$this->load->model('local/local_idiomas_model');
        return $this->imagens->consultar($consultar_imagem);
    }

}
